package tech.aistar.day11.pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 本类用来演示: 线程池技术(一)
 * Executors.newCacheThreadPool()：可缓存线程池，
 * 先查看池中有没有以前建立的线程，如果有，就直接使用。如果没有，
 * 就建一个新的线程加入池中，缓存型池子通常用于执行一些生存期很短的异步型任务
 *
 * @author: success
 * @date: 2022/8/2 3:16 下午
 */
public class CachePoolDemo {
    public static void main(String[] args) {
        //线程池是一个重量级的对象 - 单例
        ExecutorService executorService = Executors.newCachedThreadPool();

        for (int i = 0; i < 20; i++) {
            //new Thread => 创建了20个线程对象 - 消耗内存的.
            int a = i;
            //一个线程完成工作之后,继续完成下一个工作.没有必要创建新的线程了.
            executorService.submit(()->{
                System.out.println(Thread.currentThread().getName()+":"+a);
            });
        }

        //executorService.shutdown();//关闭线程池
    }
}
